package com.iapplize.gcm.test;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.util.UUID;

import android.content.Context;
import android.provider.Settings;

public class Installation {
	private static String sID = null;
    private static final String INSTALLATION = "INSTALLATION";

    public synchronized static String id(Context context) {
        if (sID == null) {  
            File installation = new File(context.getFilesDir(), INSTALLATION);
            try {
                if (!installation.exists()){
                    writeInstallationFile(installation, context);
                }
                
                sID = readInstallationFile(installation);
            } catch (Exception e) {
                //throw new RuntimeException(e);
            }
        }
        return sID;
    }

    private static String readInstallationFile(File installation) throws IOException {
        RandomAccessFile f = new RandomAccessFile(installation, "r");
        byte[] bytes = new byte[(int) f.length()];
        f.readFully(bytes);
        f.close();
        return new String(bytes);
    }

    private static void writeInstallationFile(File installation, Context context) throws IOException {
    	
        FileOutputStream out = new FileOutputStream(installation);
        
        String id = "";
        
        try{
        	id = Settings.Secure.getString(context.getContentResolver(),
        	         Settings.Secure.ANDROID_ID);
        	
        	id+=id;
        	
        }catch(Exception e){
        	id = UUID.randomUUID().toString();
        }
        
        
        
        out.write(id.getBytes());
        out.close();
    }
}